Skip to content

Display reasoning effort in the web dashboard#160

Merged
jrob5756 merged 1 commit intomainfrom
dashboard-reasoning-effort
May 6, 2026
Merged

Display reasoning effort in the web dashboard#160
jrob5756 merged 1 commit intomainfrom
dashboard-reasoning-effort

Conversation

@jrob5756
Copy link
Copy Markdown
Collaborator

@jrob5756 jrob5756 commented May 6, 2026

Problem

The dashboard already streams reasoning content (chain-of-thought shows up as 💭 thinking in the activity stream), but it does not show the configured reasoning effort (low / medium / high / xhigh) for each agent. Users have had to consult the YAML or logs to confirm which tier was applied.

What this changes

Adds a Reasoning row to each agent's metadata grid in the detail panel when reasoning effort is set in YAML. It appears right after Model so they're visually grouped.

Effective value per agent (no source distinction in the UI):

  1. agent.reasoning.effort if set, otherwise
  2. workflow.runtime.default_reasoning_effort if set, otherwise
  3. omitted (MetadataGrid filters null/empty rows automatically)

Implementation

Backend

  • engine/workflow.py — the workflow_started agent payload now includes reasoning_effort. Subworkflows inherit the same emission path via their own engine instance, so a single change covers both top-level and nested workflows.
  • New tests in test_event_emission.py cover per-agent override, workflow-default fallback, and unset (None).

Frontend

  • types/events.tsWorkflowStartedData.agents shape gains reasoning_effort.
  • stores/workflow-store.tsNodeData, IterationSnapshot, and WorkflowAgent types each gain reasoning_effort. The workflow_started handlers (top-level + subworkflow) copy the field onto the node, mirroring the existing model assignment. The agent_started snapshot push also carries it through to per-iteration history.
  • components/detail/MetadataGrid.tsxbuildAgentMetadata renders a Reasoning row right after Model when present.
  • components/detail/AgentDetail.tsx — the current-iteration snapshot spread passes reasoning_effort through so the live and history views match.
  • Static bundle rebuilt (npm run build).

Notes

  • Replays of older event log JSONL files just won't render the row — the field is missing, so MetadataGrid skips it gracefully. No migration needed.
  • Reasoning effort is fixed per workflow run (not per turn), so reusing the same value across iteration history snapshots is correct.

Verification

  • ruff check / ruff format --check — clean
  • Full test suite: 2374 passed / 9 skipped, no regressions
  • Frontend tsc -b && vite build — clean

Closes the second of the two reasoning-display issues uncovered while wiring through the recent reasoning.effort work.

The dashboard already streams reasoning *content* (model chain-of-thought
shows up as 💭 thinking in the activity stream), but it does not show
the configured reasoning *effort* (low / medium / high / xhigh). Users
have had to consult the YAML or logs to confirm which tier was applied.

This change adds a 'Reasoning' row to the agent metadata grid in the
detail panel when reasoning effort is set in YAML.

Effective value per agent (no source distinction in the UI):
- agent.reasoning.effort if set, otherwise
- workflow.runtime.default_reasoning_effort if set, otherwise
- omitted (MetadataGrid filters null/empty rows automatically)

Backend:
- engine/workflow.py: workflow_started agent payload now includes
  'reasoning_effort'. Subworkflows inherit the same emission path
  via their own engine instance, so a single change covers both.
- New test cases in test_event_emission.py cover per-agent override,
  workflow-default fallback, and unset (= None).

Frontend:
- types/events.ts: WorkflowStartedData.agents shape gains
  reasoning_effort.
- stores/workflow-store.ts: NodeData, IterationSnapshot, and
  WorkflowAgent gain reasoning_effort. workflow_started handlers
  (top-level and subworkflow) copy the field onto the node mirroring
  the existing model assignment. agent_started snapshot push also
  carries the field through to per-iteration history.
- components/detail/MetadataGrid.tsx: buildAgentMetadata renders a
  'Reasoning' row right after 'Model' when present.
- components/detail/AgentDetail.tsx: current-iteration snapshot spread
  passes reasoning_effort through so live and history views match.
- Static bundle rebuilt (npm run build).

Verification:
- ruff check / format clean
- Full test suite: 2374 passed / 9 skipped (no regressions)
- Frontend build clean (TypeScript + Vite)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jrob5756 jrob5756 force-pushed the dashboard-reasoning-effort branch from 16eca6a to 910ce1a Compare May 6, 2026 16:27
@jrob5756 jrob5756 merged commit 4eacd59 into main May 6, 2026
3 checks passed
@jrob5756 jrob5756 deleted the dashboard-reasoning-effort branch May 6, 2026 16:28
@jrob5756 jrob5756 mentioned this pull request May 6, 2026
jrob5756 added a commit that referenced this pull request May 6, 2026
- conductor resume flag parity with run (#158)
- reasoning effort displayed in dashboard (#160)
- iteration_limit_reached/resolved events for dashboard (#162)
- registry latest now means default branch HEAD, not newest tag (#157)
- forbid extra fields on Agent/Parallel/ForEach/Workflow schemas (#159)
- pretty-print tool args/results in dashboard events (#161)
- capture uv stdout+stderr on Windows install failure (#156)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant